Understanding Program Dependencies
نویسنده
چکیده
This paper reports on an experiment in trying to understand anunfamiliar program of some complexity and to record the authors’ under-standing of it. The goal was to simulate a practicing programmer in aprogram maintenance environment using the techniques of program designadapted to program understanding and documentation; that is, given aprogram, a specification and correctness proof were developed for the program.The approach points out the value of correctness proof ideas in guiding thediscovery process. Toward this end, a variety of techniques were used: directcognition for smaller parts, discovering and verifying loop invariants forlarger program parts, and functions determined by additional analysis forlarger program parts. An indeterminate bounded variable was introducedinto the program documentation to summarize the effect of several programvariables and simplify the proof of correctness. Basili90Basili, Victor. “Viewing Maintenance as Reuse-Oriented SoftwareDevelopment.” IEEE Software 7, 1 (Jan. 1990), 19-25.
منابع مشابه
Hidden Dependencies in Program Comprehension and Change Propagation
Large software systems are difficult to understand and maintain. Program dependency analysis plays a key role in both understanding and maintenance. This paper discusses hidden dependencies among software components that make both understanding and maintenance hard. Hidden dependency is a relationship between two seemingly independent components and it is caused by a data flow inside of a third...
متن کاملA Tool For Understanding Multi-Language Program Dependencies
This paper describes a prototype tool that facilitates the process of understanding and managing multi-language program dependencies. More specifically, the software tool maintains a repository of host-to-foreign language dependencies between C/C++ and Java code. We describe some program comprehension features of the tool and we discuss a preliminary case study performed in order to verify its ...
متن کاملMultithreaded Dependence Graphs for Concurrent Java Programs
Understanding program dependencies in a computer program is essential for many software engineering activities including program slicing, testing, debugging, reverse engineering, and maintenance. In this paper, we present a dependence-based representation called multithreaded dependence graph, which extends previous dependence-based representations, to represent program dependencies in a concur...
متن کاملUnderstanding functional dependencies via constraint handling rules
Functional dependencies are a popular and useful extension to Haskell style type classes. We give a reformulation of functional dependencies in terms of Constraint Handling Rules (CHRs). In previous work, CHRs have been employed for describing user-programmable type extensions in the context of Haskell style type classes. Here, we make use of CHRs to provide for the first time a concise result ...
متن کاملDependence Analysis of Java Bytecode
Understanding program dependencies in a computer program is essential for many software engineering tasks such as program understanding, testing, debugging, reverse engineering, and maintenance. In this paper, we present an approach to dependence analysis of Java bytecode, and discuss some applications of our technique, which include Java bytecode slicing, understanding, and testing.
متن کاملStatic Dependency Analysis for Concurrent Ada 95 Programs
Program dependency analysis is an analysis technique to identify and determine various program dependencies in program source codes. It is an important approach to testing, understanding, maintaining and transforming programs. But, there are still many difficulties to be solved when carrying out dependency analysis for concurrent programs because the execution of statements is unpredictable. In...
متن کامل